<?php


/*
 * SDOApi 使用得到的一些帮助函数
 * @author Wolfhead <meixueting@snda.com>
 */

class SDOApiHelper
{
    const PREFIX_SDO_SIG = "sdo_sig_";
    
    const FORCE_CHECK_KEY = true;
    /*
     * 获取已被验证的系统参数
     * @param String $paramName 参数名
     * @param Array & $paramArray 参数数组
     * return Mixed
     */
    static function getSDOParam($paramName, &$paramArray)
    {
        if (!isset($paramArray[self::PREFIX_SDO_SIG . $paramName]))
        {
            return NULL;
        }
        return $paramArray[self::PREFIX_SDO_SIG . $paramName];
    }


 	/**
	 * 得到存在允许键名的数组
	 * @param Array		$allowKeys	            	允许的键名参数 如 array('nickname','avatorver','memebertype')
	 * @param Array		$paramArray	            	用户传的键内容 如 array('nickname' => 'ggg','state1'=>1,'memebertype'=>4);
	 * @return Array  返回存在允许键名的数组 如 array ( 'nickname' => 'ggg', 'memebertype' => 4,)
	 */
	static function getAllowArray($allowKeys,$paramArray) {
		$api_param	= array();
		foreach ($paramArray as $k => &$value) {
			if (in_array($k, $allowKeys)) {
				$api_param[$k]	= $value;
			} else {
				if (self::FORCE_CHECK_KEY) trigger_error("Bad key: [$k]", E_USER_ERROR);
			}
		}
		return $api_param;
	}

	
 	/**
	 * 得到接口返回的单个数据
	 * @param Array $result 接口返回的完整信息
	 * @return Array  接口返回的数据值，如果没有设置返回$default
	 */
	static function getOneResult($result, $default = null) {
		if (!isset($result["data"]) || !isset($result["data"]["entry"]) || !isset($result["data"]["entry"][0]) || !isset($result["data"]["entry"][0]["value"])) return $default;
		return $result["data"]["entry"][0]["value"];
	}

 	/**
	 * 得到接口返回的数组
	 * @param Array $result 接口返回的完整信息
	 * @return Array  接口返回的数据值，如果没有设置返回$default
	 */
	static function getArrayResult($result, $default=array()) {
		if (!isset($result["data"]) || !isset($result["data"]["entry"])) return $default;

		$res = array();
		foreach ($result["data"]["entry"] as &$v) {
			$res []= $v["value"];
		}

		return $res;
	}
}